#include <reg52.h>

sbit LED = P0 ^ 0;   // P0^0口的引脚是DB0，
sbit ADDR0 = P1 ^ 0; // 通过跳线器 把p1^0引脚和38译码器的ADDR0口连接起来  数据位
sbit ADDR1 = P1 ^ 1; // 通过跳线器 把p1^1引脚和38译码器的ADDR1口连接起来  数据位
sbit ADDR2 = P1 ^ 2; // 通过跳线器 把p1^2引脚和38译码器的ADDR2口连接起来  数据位
sbit ADDR3 = P1 ^ 3; // 通过跳线器 把p1^3引脚和38译码器的ADDR3口连接起来   使能ENLED=0，ADDR3=1 固定
sbit ENLED = P1 ^ 4; // 使能ENLED=0，ADDR3=1 固定

void main()
{
    unsigned  char cnt=0; // 定义一个计数变量，记录T0 溢出次数
//*********************38译码器 固定配置***********************************************
    ENLED = 0; // 使能ENLED=0，ADDR3=1 固定
    ADDR3 = 1; // 使能ENLED=0，ADDR3=1 固定
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 1; // 111->1111 1110  使得LED6为低电平  LED正级接通
//*************************************************************************************
//*********************定时器配置*******************************************************
    TMOD=0x01;  // 定时器的工作模式 01  (固定)
    TH0=0xB8; // 为T0 赋初值0xB800
    TL0=0x00; // 
    TR0=1;//  定时器T0 使能
//*************************************************************************************


    while (1)
    {
        if(TF0==1)   // 定时器T0 到期限溢出 
        {
            TF0=0; // 定时器T0 到期限溢出后，清0 中断标志
            TH0=0xB8;  // T0 回到初值
            TL0=0x00;
            cnt++;
            if(cnt>=50)  // 判断 T0溢出是否达到50次  将定时*倍数
            {
                cnt=0; // 倍数清0  
                // 以上都是固定代码
                LED=~LED;
            }
        }
       
    }
}